package com.jxpanda.spring.module.pay.core.client;

import com.jxpanda.spring.module.pay.core.pojo.PaymentRequest;
import com.jxpanda.spring.module.pay.core.pojo.PaymentResponse;
import com.jxpanda.spring.module.pay.core.pojo.PaymentChannel;
import reactor.core.publisher.Mono;

public interface ReactivePaymentClient {

    /**
     * appName
     */
    String getAppName();

    /**
     * appId
     */
    String getAppId();

    /**
     * 支付类型
     */
    PaymentChannel getPaymentType();

    /**
     * 执行请求指令
     */
    <R, T> Mono<PaymentResponse<R>> execute(PaymentRequest<T> paymentRequest);

}
